class Solution {
public:
/****  题意每隔k个反转k个，末尾不够k个时全部反转 ***/
/*
  // 模拟
    void ReverseStr(string& s, int left, int right){ 
        for(int i = left, j = right; i < j; ++i, --j)
            swap(s[i], s[j]);
    }

    string reverseStr(string s, int k) {
        for(int i = 0; i < s.size(); i += (2 * k)){
            // 每2k个字符就反转前k个字符
            if(i + k <= s.size()){
                ReverseStr(s, i, i+k-1);
            }
            else   // 如果字符少于 k 个全部反转
                ReverseStr(s, i, s.size()-1) ;
        }
        return s;
    }
*/
    string reverseStr(string s, int k) {
        int len = s.size();
        for(int i=0; i < len; i += 2*k)
            reverse(s.begin()+i, s.begin()+min(len, i+k));
        return s;
    }
};